import cookies from './util.cookies';
import log from './util.log';
import db from './util.db';
import base64 from './base64';

import Setting from '@/setting';

const util = {
    cookies,
    log,
    db
};

function tTitle(title = '') {
    if (window && window.$t) {
        if (title.indexOf('$t:') === 0) {
            return window.$t(title.split('$t:')[1]);
        } else {
            return title;
        }
    } else {
        return title;
    }
}

/**
 * @description 更改标题
 * @param {Object} title 标题
 * @param {Object} count 未读消息数提示（可视情况选择使用或不使用）
 */
util.title = function ({ title, count }) {
    title = tTitle(title);
    let fullTitle = title ? `${title} - ${Setting.titleSuffix}` : Setting.titleSuffix;

    if (count) fullTitle = `(${count}条消息)${fullTitle}`;
    window.document.title = fullTitle;
};

function requestAnimation(task) {
    if ('requestAnimationFrame' in window) {
        return window.requestAnimationFrame(task);
    }

    setTimeout(task, 16);
}

util.decode = function (message) {
    let digest = '';
    switch (message.ContentType) {
        case 'Text':
            digest = base64.b64DecodeUnicode(message.Content);
            if (message.FriendId.indexOf('@chatroom') > 0) {
                digest = unescape(escape(digest.replace(/.*?:/, '')).replace('%0A', '%20')).replace(' ', '');
            }
            break;
        case 'Picture':
        case 2:
            digest = '[图片]';
            break;
        // 语音 3
        case 'Voice':
        case 3:
            digest = '[语音]';
            break;
        // 视频 4
        case 'Video':
        case 4:
            digest = '[视频]';
            break;
        // 系统消息 5
        case 'System':
        case 5:
            digest = '[系统消息]';
            break;
        // 链接消息 6
        case 'Link':
        case 6:
            digest = '[链接]';
            break;
        // 扩展的链接消息（小程序分享等），内容为xml格式，暂未使用 7
        case 'LinkExt':
        case 7:
            digest = '[扩展的链接消息]';
            break;
        // 文件 8
        case 'File':
        case 8:
            digest = '[文件]';
            break;
        // 名片 9
        case 'NameCard':
        case 9:
            digest = '[名片]';
            break;
        // 位置信息 10
        case 'Location':
        case 10:
            digest = '[位置消息]';
            break;
        // 红包 11
        case 'LuckyMoney':
        case 11:
            digest = '[链接]';
            break;
        // 转账 12
        case 'MoneyTrans':
        case 12:
            digest = '[红包]';
            break;
        // 小程序 13
        case 'WeApp':
        case 13:
            digest = '[小程序]';
            break;
        // Emoji 14
        case 'Emoji':
        case 14:
            digest = '[Emoji]';
            break;
        // 群管理消息 15
        case 'RoomManage':
        case 15:
            digest = '[群管理消息]';
            break;
        // 红包系统消息 16
        case 'Sys_LuckyMoney':
        case 16:
            digest = '[红包系统消息]';
            break;
        // 群系统消息 17
        case 'RoomSystem':
        case 17:
            digest = '[群系统消息]';
            break;
        // 不支持的消息
        default:
            digest = '[不支持的消息]';
            break;
    }
    message.Digest = digest;
    return message;
};


export { requestAnimation };

export default util;
